// Set数据结构，注意这里不是数据类型，而是数据结构
// Set和Array 的区别是Set不允许内部有重复的值，如果有只显示一个，
// 相当于去重。虽然Set很像数组，但是他不是数组。


let s=[2,3,4,5,6,6,6,5,7]
let st=new Set(s);
console.log(st)

let setArr1 = new Set(['jspang','技术胖','web','jspang']);
console.log(setArr1);//Set {"jspang", "技术胖", "web"}
// 追加add：
setArr1.add('前端职场');
console.log(setArr1);


let setArr = new Set(['jspang','技术胖','web','jspang']);
console.log(setArr);//Set {"jspang", "技术胖", "web"}
// 删除delete：
setArr.add('前端职场');
console.log(setArr); //Set {"jspang", "技术胖", "web", "前端职场"}
 
setArr.delete('前端职场');
console.log(setArr); //Set {"jspang", "技术胖", "web"}


// 用has进行值的查找，返回的是true或者false。
let setArr2 = new Set(['jspang','技术胖','web','jspang']);
console.log(setArr2);//Set {"jspang", "技术胖", "web"}
 
console.log(setArr2.has('jspang'));//true

// set的循环 for…of…循环：
let setArr3 = new Set(['jspang','技术胖','web','jspang']);
for (let item of setArr3){
    console.log(item);
}

// size属性可以获得Set值的数量。
let setArr4 = new Set(['jspang','技术胖','web','jspang']);
for (let item of setArr4){
    console.log(item);
}
 
console.log(setArr4.size);

// forEach循环
let setArr5 = new Set(['jspang','技术胖','web','jspang']);
setArr5.forEach((value)=>console.log(value));

// WeakSet的声明 这里需要注意的是，如果你直接在new 的时候就放入值，将报错。
let weakObj=new WeakSet();
let obj={a:'jspang',b:'技术胖'}
weakObj.add(obj);
 
console.log(weakObj);

// WeakSet里边的值也是不允许重复的，我们来测试一下。
let weakObj2=new WeakSet();
let obj2={a:'jspang',b:'技术胖'}
let obj1=obj2;
 
weakObj2.add(obj2);
weakObj2.add(obj1);
 
console.log(weakObj2);